home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / bbs / tdk_v136.zip / MAX_UNIT.PAS < prev    next >
Pascal/Delphi Source File  |  1997-08-14  |  9KB  |  317 lines

  1. {
  2.  ▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀    ▀▀   ▀▀
  3.    ▀▀     ▀▀   ▀▀   ▀▀  ▀▀
  4.   ▀▀     ▀▀   ▀▀▀  ▀▀▀▀▀  The DoorKit!
  5.  ▀▀     ▀▀   ▀▀   ▀▀  ▀▀
  6. ▀▀     ▀▀▀▀▀▀    ▀▀    ▀▀
  7. The BBS Door Development Kit By The People - For The People!
  8.  
  9.  
  10.    Feel free to modify or optimize this code at will. All I ask is that if
  11.    find a better way to do things (and you will), please send me a copy of
  12.    your modifications. Thanks in advance!....Larry L. Athey....                 }
  13.  
  14.  
  15. {$A+,B-,D+,E+,F+,G+,I-,L+,N-,O+,P-,Q-,R-,S-,T-,V+,X+}
  16. UNIT MAX_UNIT;
  17.  
  18. INTERFACE
  19.  
  20. PROCEDURE MaxCommand(S : STRING);
  21. {^ Processes and sends MAXscript/MAXcontrol/MAXcolor commands.}
  22.  
  23. {───────────────────────────────────────────────────────────────────────────}
  24.  
  25. IMPLEMENTATION
  26.  
  27. USES _EXIT, TDK_VARS, DOORKIT1, DOORKIT2, DOORKIT3;
  28.  
  29. {───────────────────────────────────────────────────────────────────────────}
  30. PROCEDURE GetFieldData;
  31. VAR
  32.   FText : TEXT;
  33.   Loop  : BYTE;
  34.   Count : BYTE;
  35.   Ch    : CHAR;
  36.   St    : STRING;
  37. BEGIN
  38.   DVWrite(2,24,14,PadRight('Receiving Field Data',' ',78));
  39.   ASSIGN(FText,'FIELDS.'+IntToStr(DoorSys.Node));
  40.   REWRITE(FText);
  41.   St    := '';
  42.   Count := 0;
  43.   Wait(2);
  44.   IF NOT DataAvailable THEN REPEAT
  45.     INC(Count);
  46.     Wait(1);
  47.   UNTIL (DataAvailable) OR (Count = 5);
  48.   WHILE DataAvailable DO BEGIN
  49.     Ch := GetChar;
  50.     St := St + Ch;
  51.     IF POS(#13#10,St) > 0 THEN BEGIN
  52.       St := StripBoth(St,#10);
  53.       St := StripBoth(St,#13);
  54.       IF POS(#255#255,St) = 0 THEN BEGIN
  55.         WRITELN(FText,St);
  56.         TimeSlice;
  57.       END ELSE BEGIN
  58.         CLOSE(FText);
  59.         DVWrite(2,24,0,PadRight(' ',' ',78));
  60.         IF FSize('FIELDS.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('FIELDS.'+IntToStr(DoorSys.Node));
  61.         TimeSlice;
  62.         EXIT;
  63.       END;
  64.       St := '';
  65.     END;
  66.   END;
  67.   CLOSE(FText);
  68.   IF FSize('FIELDS.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('FIELDS.'+IntToStr(DoorSys.Node));
  69.   DVWrite(2,24,0,PadRight(' ',' ',78));
  70. END;
  71. {───────────────────────────────────────────────────────────────────────────}
  72. PROCEDURE GetEditorText;
  73. VAR
  74.   EText : TEXT;
  75.   Ch    : CHAR;
  76.   St    : STRING;
  77.   Count : BYTE;
  78. BEGIN
  79.   DVWrite(2,24,14,PadRight('Receiving Editor Text',' ',78));
  80.   ASSIGN(EText,'EDITOR.'+IntToStr(DoorSys.Node));
  81.   REWRITE(EText);
  82.   St    := '';
  83.   Count := 0;
  84.   Wait(2);
  85.   IF NOT DataAvailable THEN REPEAT
  86.     INC(Count);
  87.     Wait(1);
  88.   UNTIL (DataAvailable) OR (Count = 5);
  89.   WHILE DataAvailable DO BEGIN
  90.     Ch := GetChar;
  91.     St := St + Ch;
  92.     IF POS(#13#10,St) > 0 THEN BEGIN
  93.       St := StripBoth(St,#10);
  94.       St := StripBoth(St,#13);
  95.       IF POS(#255#255,St) = 0 THEN BEGIN
  96.         WRITELN(EText,St);
  97.         TimeSlice;
  98.       END ELSE BEGIN
  99.         CLOSE(EText);
  100.         DVWrite(2,24,0,PadRight(' ',' ',78));
  101.         IF FSize('EDITOR.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('EDITOR.'+IntToStr(DoorSys.Node));
  102.         TimeSlice;
  103.         EXIT;
  104.       END;
  105.       St := '';
  106.     END;
  107.   END;
  108.   CLOSE(EText);
  109.   IF FSize('EDITOR.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('EDITOR.'+IntToStr(DoorSys.Node));
  110.   DVWrite(2,24,0,PadRight(' ',' ',78));
  111. END;
  112. {───────────────────────────────────────────────────────────────────────────}
  113. PROCEDURE GetResourceInfo;
  114. VAR
  115.   FText : TEXT;
  116.   Count : BYTE;
  117.   Ch    : CHAR;
  118.   St    : STRING;
  119. BEGIN
  120.   DVWrite(2,24,14,PadRight('Receiving Resource Info',' ',78));
  121.   ASSIGN(FText,'RES.'+IntToStr(DoorSys.Node));
  122.   REWRITE(FText);
  123.   St    := '';
  124.   Count := 0;
  125.   Wait(2);
  126.   IF NOT DataAvailable THEN REPEAT
  127.     INC(Count);
  128.     Wait(1);
  129.   UNTIL (DataAvailable) OR (Count = 15);
  130.   WHILE DataAvailable DO BEGIN
  131.     Ch := GetChar;
  132.     St := St + Ch;
  133.     IF POS(#13#10,St) > 0 THEN BEGIN
  134.       St := StripBoth(St,#10);
  135.       St := StripBoth(St,#13);
  136.       IF POS(#255#255,St) = 0 THEN BEGIN
  137.         WRITELN(FText,St);
  138.         TimeSlice;
  139.       END ELSE BEGIN
  140.         CLOSE(FText);
  141.         DVWrite(2,24,0,PadRight(' ',' ',78));
  142.         IF FSize('RES.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('RES.'+IntToStr(DoorSys.Node));
  143.         TimeSlice;
  144.         EXIT;
  145.       END;
  146.       St := '';
  147.     END;
  148.   END;
  149.   CLOSE(FText);
  150.   IF FSize('RES.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('RES.'+IntToStr(DoorSys.Node));
  151.   DVWrite(2,24,0,PadRight(' ',' ',78));
  152. END;
  153. {───────────────────────────────────────────────────────────────────────────}
  154. PROCEDURE GetUserInfo;
  155. VAR
  156.   FText : TEXT;
  157.   Count : BYTE;
  158.   Ch    : CHAR;
  159.   St    : STRING;
  160. BEGIN
  161.   DVWrite(2,24,14,PadRight('Receiving User Info',' ',78));
  162.   ASSIGN(FText,'USER.'+IntToStr(DoorSys.Node));
  163.   REWRITE(FText);
  164.   St    := '';
  165.   Count := 0;
  166.   Wait(2);
  167.   IF NOT DataAvailable THEN REPEAT
  168.     INC(Count);
  169.     Wait(1);
  170.   UNTIL (DataAvailable) OR (Count = 5);
  171.   WHILE DataAvailable DO BEGIN
  172.     Ch := GetChar;
  173.     St := St + Ch;
  174.     IF POS(#13#10,St) > 0 THEN BEGIN
  175.       St := StripBoth(St,#10);
  176.       St := StripBoth(St,#13);
  177.       IF POS(#255#255,St) = 0 THEN BEGIN
  178.         WRITELN(FText,St);
  179.         TimeSlice;
  180.       END ELSE BEGIN
  181.         CLOSE(FText);
  182.         DVWrite(2,24,0,PadRight(' ',' ',78));
  183.         IF FSize('USER.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('USER.'+IntToStr(DoorSys.Node));
  184.         TimeSlice;
  185.         EXIT;
  186.       END;
  187.       St := '';
  188.     END;
  189.   END;
  190.   CLOSE(FText);
  191.   IF FSize('USER.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('USER.'+IntToStr(DoorSys.Node));
  192.   DVWrite(2,24,0,PadRight(' ',' ',78));
  193. END;
  194. {───────────────────────────────────────────────────────────────────────────}
  195. PROCEDURE GetSystemInfo;
  196. VAR
  197.   FText : TEXT;
  198.   Count : BYTE;
  199.   Ch    : CHAR;
  200.   St    : STRING;
  201. BEGIN
  202.   DVWrite(2,24,14,PadRight('Receiving System Info',' ',78));
  203.   ASSIGN(FText,'REMOTE.'+IntToStr(DoorSys.Node));
  204.   REWRITE(FText);
  205.   St    := '';
  206.   Count := 0;
  207.   Wait(2);
  208.   IF NOT DataAvailable THEN REPEAT
  209.     INC(Count);
  210.     Wait(1);
  211.   UNTIL (DataAvailable) OR (Count = 5);
  212.   WHILE DataAvailable DO BEGIN
  213.     Ch := GetChar;
  214.     St := St + Ch;
  215.     IF POS(#13#10,St) > 0 THEN BEGIN
  216.       St := StripBoth(St,#10);
  217.       St := StripBoth(St,#13);
  218.       IF POS(#255#255,St) = 0 THEN BEGIN
  219.         WRITELN(FText,St);
  220.         TimeSlice;
  221.       END ELSE BEGIN
  222.         CLOSE(FText);
  223.         DVWrite(2,24,0,PadRight(' ',' ',78));
  224.         IF FSize('REMOTE.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('REMOTE.'+IntToStr(DoorSys.Node));
  225.         TimeSlice;
  226.         EXIT;
  227.       END;
  228.       St := '';
  229.     END;
  230.   END;
  231.   CLOSE(FText);
  232.   IF FSize('REMOTE.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('REMOTE.'+IntToStr(DoorSys.Node));
  233.   DVWrite(2,24,0,PadRight(' ',' ',78));
  234. END;
  235. {───────────────────────────────────────────────────────────────────────────}
  236. PROCEDURE GetPickInfo;
  237. VAR
  238.   FText : TEXT;
  239.   Count : BYTE;
  240.   Ch    : CHAR;
  241.   St    : STRING;
  242. BEGIN
  243.   DVWrite(2,24,14,PadRight('Receiving PickList Info',' ',78));
  244.   ASSIGN(FText,'PICKINFO.'+IntToStr(DoorSys.Node));
  245.   REWRITE(FText);
  246.   St    := '';
  247.   Count := 0;
  248.   Wait(2);
  249.   IF NOT DataAvailable THEN REPEAT
  250.     INC(Count);
  251.     Wait(1);
  252.   UNTIL (DataAvailable) OR (Count = 5);
  253.   WHILE DataAvailable DO BEGIN
  254.     Ch := GetChar;
  255.     St := St + Ch;
  256.     IF POS(#13#10,St) > 0 THEN BEGIN
  257.       St := StripBoth(St,#10);
  258.       St := StripBoth(St,#13);
  259.       IF POS(#255#255,St) = 0 THEN BEGIN
  260.         WRITELN(FText,St);
  261.         TimeSlice;
  262.       END ELSE BEGIN
  263.         CLOSE(FText);
  264.         DVWrite(2,24,0,PadRight(' ',' ',78));
  265.         IF FSize('PICKINFO.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('PICKINFO.'+IntToStr(DoorSys.Node));
  266.         TimeSlice;
  267.         EXIT;
  268.       END;
  269.       St := '';
  270.     END;
  271.   END;
  272.   CLOSE(FText);
  273.   IF FSize('PICKINFO.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('PICKINFO.'+IntToStr(DoorSys.Node));
  274.   DVWrite(2,24,0,PadRight(' ',' ',78));
  275. END;
  276. {───────────────────────────────────────────────────────────────────────────}
  277. PROCEDURE MaxCommand(S : STRING);
  278. VAR
  279.   SS   : STRING;
  280. BEGIN
  281.   IF Local THEN EXIT;
  282.   S  := StripBoth(S,' ');
  283.   SS := AllCaps(S);
  284.   IF POS(#255#125,S) = 1 THEN BEGIN
  285.     SendStr(S + #13#10);
  286.     TimeSlice;
  287.     CASE S[3] OF
  288.       #200 : GetUserInfo;
  289.       #201 : GetResourceInfo;
  290.       #205 : GetSystemInfo;
  291.     END;
  292.     EXIT;
  293.   END;
  294.   IF (POS('GET_FIELD_DATA()',SS) > 0) OR (POS(' ~· ',SS) > 0) THEN BEGIN
  295.     SendStr(S + #13#10);
  296.     TimeSlice;
  297.     GetFieldData;
  298.     EXIT;
  299.   END;
  300.   IF (POS('GET_EDITOR_TEXT()',SS) > 0) OR (POS(' ~∙ ',SS) > 0) THEN BEGIN
  301.     SendStr(S + #13#10);
  302.     TimeSlice;
  303.     GetEditorText;
  304.     EXIT;
  305.   END;
  306.   IF (POS('GET_PICK_INFO()',SS) > 0) OR (POS(' ~≈ ',SS) > 0) THEN BEGIN
  307.     SendStr(S + #13#10);
  308.     TimeSlice;
  309.     GetPickInfo;
  310.     EXIT;
  311.   END;
  312.   SendStr(S + #13#10);
  313. END;
  314. {───────────────────────────────────────────────────────────────────────────}
  315.  
  316. END.
  317.